package main

import (
	"bytes"
	"fmt"
	"os/exec"
	"strings"
)

type Person struct {
	Num string
}

func (p Person) speak() {
	//这是值传递，
	p.Num = strings.Repeat(p.Num, 2)
	fmt.Println(p.Num, "是一个好人")

}
func (p Person) cal() int {
	var total int
	for i := 0; i <= 10000; i++ {
		total += i
	}
	return total
}

//只能通过person 类型 调用，不能通过其他方法调用
func (p *Person) test() {
	fmt.Println("test()", p.Num)

}
func main() {
	p := Person{Num: "person"}
	p.Num = "牛夫人"
	p.test()
	p.speak()
	fmt.Println(p.cal())
	fmt.Println(p.Num)

	cmd()

}
func cmd() {
	//https://www.bbsmax.com/A/6pdDybjqzw/
	//go exec中，命令的所有参数都需要分开填写才行。
	var outInfo bytes.Buffer
	cmd := exec.Command("curl", "--referer",
		"https://www.nvshens.net/g/31724/14.html",
		"https://t1.onvshen.com:85/gallery/28098/34582/s/0.jpg", "-o",
		"d:/AAA.jpg")
	// 设置接收
	cmd.Stdout = &outInfo
	// 执行|start 不等待结果，run等待结果
	err := cmd.Start()
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println("执行结束", outInfo.String())

}
